'''
Python位运算符
a = 0011 1100
b = 0000 1101

a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a  = 1100 0011
'''
a = 60  # 60 = 0011 1100
b = 13  # 13 = 0000 1101
c = 0
c = a & b;  # 12 = 0000 1100
print("1 - c 的值为：", c)
c = a | b;  # 61 = 0011 1101
print("2 - c 的值为：", c)
c = a ^ b;  # 49 = 0011 0001
print("3 - c 的值为：", c)
c = ~a;  # -61 = 1100 0011
print("4 - c 的值为：", c)
c = a << 2;  # 240 = 1111 0000
print("5 - c 的值为：", c)
c = a >> 2;  # 15 = 0000 1111
print("6 - c 的值为：", c)
# -----------------------------------------------------------
'''
Python逻辑运算符
Python语言支持逻辑运算符，以下假设变量 a 为 10, b为 20:
运算符	逻辑表达式	描述	                                                                    实例
and	    x and y	    布尔"与" - 如果 x 为 False，x and y 返回 False，否则它返回 y 的计算值。	    (a and b) 返回 20。
or	    x or y	    布尔"或" - 如果 x 是 True，它返回 x 的值，否则它返回 y 的计算值。	        (a or b) 返回 10。
not 	not x	    布尔"非" - 如果 x 为 True，返回 False 。如果 x 为 False，它返回 True。	    not(a and b) 返回 False
'''
a2 = 0
b2 = 20
c2 = True
d2 = False
print(a2 and b2)
print(a2 or b2)

print(c2 and b2)
print(c2 or b2)

print(d2 and b2)
print(d2 or b2)
# -----------------------------------------------------------
#Python成员运算符
#in
#not in
# -----------------------------------------------------------
#Python身份运算符
#is
#is not
# -----------------------------------------------------------
a3=20
b3=20
print(id(a3))
print(a3 is b3)

a = 20
b = 10
c = 15
d = 5
e = 0
# --------------------------------------------------------------
#Python运算符优先级
e = (a + b) * c / d       #( 30 * 15 ) / 5
print ("(a + b) * c / d 运算结果为：",  e)
e = ((a + b) * c) / d     # (30 * 15 ) / 5
print ("((a + b) * c) / d 运算结果为：",  e)
e = (a + b) * (c / d);    # (30) * (15/5)
print ("(a + b) * (c / d) 运算结果为：",  e)
e = a + (b * c) / d;      #  20 + (150/5)
print ("a + (b * c) / d 运算结果为：",  e)

#and 拥有更高优先级:
x = True
y = False
z = False
if x or y and z:
    print("yes")
else:
    print("no")